package com.tdam_2012_g7;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;

import messagesenderclient.ConsultarMensajes;

import com.tdam_2012_g7.data.CargarAcciones;
import com.tdam_2012_g7.data.CargarMensajes;

import entidades.AccionItem;
import entidades.Contacto;
import entidades.Usuario;
import adapters.ItemAccionAdapter;
import adapters.ItemAccionAdapter.FilterLlamada;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.view.Menu;
import android.view.MenuItem;

public class Pestana_Historial_Acciones extends ListActivity {
	
	private ItemAccionAdapter adapter;

	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ArrayList<AccionItem> items = getItems();
        setContentView(R.layout.activity_ver_historial_layout);
        adapter=new ItemAccionAdapter(this, R.layout.item_contacto,items);
        setListAdapter(adapter);
        this.registerForContextMenu(getListView());
        this.getListView().setTextFilterEnabled(true);
        
        setearFiltros();
		ordenarLista();
    }

    /*@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_lista_contacto_layout, menu);
        return true;
    }*/
    
    /**
     * @return
     */
    public ArrayList<AccionItem> getItems() {
		
		ArrayList<AccionItem> items = new ArrayList<AccionItem>();
		
		//Traer acciones de la DB
		CargarAcciones cargarAcciones = new CargarAcciones();
		Context contexto = getApplicationContext();
		Cursor c=cargarAcciones.getAcciones(contexto);
		
		if (c.getCount() > 0) {
			while (c.moveToNext()) {
				// Obtenemos los datos desde el cursor.
				int idAccion = c.getInt(c.getColumnIndex("_id"));
				String dateAccion = c.getString(c.getColumnIndex("AccionDate"));
				int idContacto = c.getInt(c.getColumnIndex("AccionIdTo"));
				String nom = c.getString(c.getColumnIndex("AccionName"));
				String cont = c.getString(c.getColumnIndex("AccionNameTo"));
				String desc = c.getString(c.getColumnIndex("AccionDescrip"));
				int tipo = c.getInt(c.getColumnIndex("AccionTipo"));
				
				// int id, String name,String fecha,String desc, int idCont, int
				AccionItem item = new AccionItem(idAccion, nom, dateAccion,
						desc, idContacto, tipo, cont);

				items.add(item);
			}
		}
		c.close();
		return items;
	}
    
    private void setearFiltros() {
		FilterLlamada filtro = (FilterLlamada) adapter.getFilter();
		filtro.filter(getPreferences());
		
	}
    
    private String getPreferences() {
		SharedPreferences pref = PreferenceManager
				.getDefaultSharedPreferences(getApplicationContext());
		String codFiltro = pref.getString("filtroTipoAccion", "10");
		return codFiltro;
	}
	
	private Comparator<AccionItem> getComparatorFromPreferences(){
		
		SharedPreferences pref = PreferenceManager
				.getDefaultSharedPreferences(getApplicationContext());
		String codFiltro = pref.getString("ordenAplicado", "asc");
		
		if(codFiltro.equalsIgnoreCase("asc")){
			return AccionItem.comparadorFechaAsc;
		}else{
			return AccionItem.comparadorFechaDesc;
		}
	}
	
	private void ordenarLista(){
		adapter.sort(getComparatorFromPreferences());
	}
    
    @Override
	public void onResume(){
		 super.onResume();
	     ArrayList<AccionItem> items = getItems();
	     setearFiltros();
			ordenarLista();
	}
    
    @Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.options_menu_filtrar_ordenar, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.buscar:
			this.startActivity(new Intent(this, Preference_Filtro_Acciones.class));
			return true;
		case R.id.ordenar:
			this.startActivity(new Intent(this, Preference_Ordenar_Acciones.class));
			return true;
		default:
			return true;
		}
	}
		
}
